/**
 * 天工角色侧边栏“白名单”配置
 *
 * 说明：
 * - 仅用于集中管理要展示的菜单 key，方便后续按需增删；
 * - 本文件不直接生效（没有改动任何逻辑/功能），接入时只需要在菜单生成处引用对应数组进行过滤即可；
 * - 路由 key 取自现有项目，若后续路由结构调整，请同步到这里。
 */

export type TiangongMenuEntry = {
  key: string; // 菜单路由 key
  label: string; // 菜单名称
  isParent?: boolean; // 是否父级（仅用于注释说明）
};
export type TiangongMenuEntryWithEnable = TiangongMenuEntry & { enabled: boolean };
// 更简洁的黑名单：直接写不显示的 key
// 超级管理员（super_admin）- 隐藏清单
// 示例：隐藏文档管理父级及其子级（如仅隐藏父级即可生效，可按需保留/注释子级）
export const TIAN_GONG_ADMIN_HIDE_LIST: string[] = [
  '/aiNav',
  '/appReviewCenter/datasets/approval',
  '/tools',
  '/tools/pluginCenter',
  '/tools/mcpCenter',
  '/permission',
  '/permission/appManage',
  '/document',
  '/document/document-type-manage',
  '/document/lexicon-manage',
];
// 管理员（admin）- 隐藏清单（按需填写）
export const TIAN_GONG_ADMIN_ONLY_HIDE_LIST: string[] = [
  '/aiNav',
  '/appReviewCenter',
  '/appReviewCenter/datasets/approval',
  // '/appReviewCenter/datasets/knowledge-base-approval',
  // '/messageCenter',
  '/behavior-log',
  '/modelManage',
  '/tools',
  '/tools/pluginCenter',
  '/tools/mcpCenter',
  '/permission',
  '/permission/appManage',
  '/permission/organizational-manage',
  '/document',
  '/document/document-type-manage',
  '/document/lexicon-manage',
  '/singleSign',
];
// 普通天工用户（非管理员）- 隐藏清单（按需填写）
export const TIAN_GONG_USER_HIDE_LIST: string[] = [
  '/aiNav',
  '/appReviewCenter',
  '/appReviewCenter/datasets/approval',
  '/appReviewCenter/datasets/knowledge-base-approval',
  '/messageCenter',
  '/behavior-log',
  '/modelManage',
  '/tools',
  '/tools/pluginCenter',
  '/tools/mcpCenter',
  '/permission',
  '/permission/appManage',
  '/permission/organizational-manage',
  '/document',
  '/document/document-type-manage',
  '/document/lexicon-manage',
  '/singleSign',
];

// 侧边栏“全量菜单清单”（根据现有项目整理；若后续有新增/改名，请在此补充）
const ALL_SIDE_MENUS: TiangongMenuEntry[] = [
  { key: '/', label: '应用中心' },
  { key: '/aiNav', label: '资源门户' },
  { key: '/appReviewCenter', label: '审批中心', isParent: true },
  { key: '/appReviewCenter/datasets/approval', label: '应用审批' },
  { key: '/appReviewCenter/datasets/knowledge-base-approval', label: '知识审批' },
  { key: '/messageCenter', label: '消息中心' },
  { key: '/behavior-log', label: '行为日志' },
  { key: '/modelManage', label: '模型管理' },
  { key: '/tools', label: '工具管理', isParent: true },
  { key: '/tools/pluginCenter', label: '插件中心' },
  { key: '/tools/mcpCenter', label: 'MCP中心' },
  { key: '/permission', label: '权限管理', isParent: true },
  { key: '/permission/appManage', label: '应用权限管理' },
  { key: '/permission/organizational-manage', label: '组织管理' },
  { key: '/document', label: '文档管理', isParent: true },
  { key: '/document/document-type-manage', label: '文档类型管理' },
  { key: '/document/lexicon-manage', label: '词条管理' },
  // 注意：实际路由 key 为 /singleSign（单点登录配置页面）
  { key: '/singleSign', label: '登录配置' },
];

/**
 * 超级管理员（is_TianGong === true 且 role.code = 'super_admin'）
 * 将“全部侧边栏菜单”映射一份可开关的数组，设置 enabled=false 即可隐藏；
 * 最终白名单会从该映射数组中过滤 enabled=true 的项得到。
 */
export const TIAN_GONG_ADMIN_MAP: TiangongMenuEntryWithEnable[] = ALL_SIDE_MENUS.map((e) => ({
  ...e,
  enabled: !TIAN_GONG_ADMIN_HIDE_LIST.includes(e.key),
}));

// 调试：打印超级管理员映射状态
// console.log('超级管理员菜单映射状态:');
// TIAN_GONG_ADMIN_MAP.forEach((e) => {
//   if (e.key === '/permissionManage' || e.key === '/behaviorLog') {
//     console.log(`${e.key} - ${e.label}: enabled=${e.enabled}`);
//   }
// });

export const TIAN_GONG_ADMIN_WHITELIST: TiangongMenuEntry[] = TIAN_GONG_ADMIN_MAP.filter(
  (e) => e.enabled,
);

/**
 * 管理员（is_TianGong === true 且 role.code = 'admin'）
 * 与超级管理员相同：通过映射数组开关菜单；
 */
export const TIAN_GONG_ADMIN_ONLY_MAP: TiangongMenuEntryWithEnable[] = ALL_SIDE_MENUS.map((e) => ({
  ...e,
  enabled: !TIAN_GONG_ADMIN_ONLY_HIDE_LIST.includes(e.key),
}));
export const TIAN_GONG_ADMIN_ONLY_WHITELIST: TiangongMenuEntry[] = TIAN_GONG_ADMIN_ONLY_MAP.filter(
  (e) => e.enabled,
);

/**
 * 普通天工用户（is_TianGong === true 且 非管理员）
 * 与超级管理员相同：通过映射数组开关菜单；
 */
export const TIAN_GONG_USER_MAP: TiangongMenuEntryWithEnable[] = ALL_SIDE_MENUS.map((e) => ({
  ...e,
  enabled: !TIAN_GONG_USER_HIDE_LIST.includes(e.key),
}));
export const TIAN_GONG_USER_WHITELIST: TiangongMenuEntry[] = TIAN_GONG_USER_MAP.filter(
  (e) => e.enabled,
);

/**
 * 使用方式（示例）：
 *
 * import { TIAN_GONG_ADMIN_WHITELIST, TIAN_GONG_USER_WHITELIST } from './tiangong-whitelists';
 * const isTiangong = Boolean(userInfo?.is_TianGong === 'true' || userInfo?.is_TianGong === true);
 * const isAdminRole = ['admin', 'super_admin'].includes(userInfo?.role?.code || '');
 * let finalMenu = menuWithBadge;
 * if (isTiangong) {
 *   const list = isAdminRole ? TIAN_GONG_ADMIN_WHITELIST : TIAN_GONG_USER_WHITELIST;
 *   finalMenu = (menuWithBadge || []).filter((m: any) => list.some((e) => e.key === m.key));
 * }
 */
